<?php
if (!function_exists('authCode')) {
	/**
	 * Discuz 加密/解密
	 *
	 * @param [type]  $string    [description]
	 * @param string  $operation [description]
	 * @param string  $key       [description]
	 * @param integer $expiry    [description]
	 * @return [type]            [description]
	 */
	function authCode( $string, $operation = 'DECODE', $key = '', $expiry = 0 ) {
		$ckey_length = 4;
		$key = md5( $key != '' ? $key : 'AUTH_CODE' );
		$keya = md5( substr( $key, 0, 16 ) );
		$keyb = md5( substr( $key, 16, 16 ) );
		$keyc = $ckey_length ? ( $operation == 'DECODE' ? substr( $string, 0, $ckey_length ): substr( md5( microtime() ), -$ckey_length ) ) : '';
		$cryptkey = $keya.md5( $keya.$keyc );
		$key_length = strlen( $cryptkey );
		$string = $operation == 'DECODE' ? base64_decode( substr( $string, $ckey_length ) ) : sprintf( '%010d', $expiry ? $expiry + time() : 0 ).substr( md5( $string.$keyb ), 0, 16 ).$string;
		$string_length = strlen( $string );
		$result = '';
		$box = range( 0, 255 );
		$rndkey = array();
		for ( $i = 0; $i <= 255; $i++ ) {
			$rndkey[$i] = ord( $cryptkey[$i % $key_length] );
		}
		for ( $j = $i = 0; $i < 256; $i++ ) {
			$j = ( $j + $box[$i] + $rndkey[$i] ) % 256;
			$tmp = $box[$i];
			$box[$i] = $box[$j];
			$box[$j] = $tmp;
		}
		for ( $a = $j = $i = 0; $i < $string_length; $i++ ) {
			$a = ( $a + 1 ) % 256;
			$j = ( $j + $box[$a] ) % 256;
			$tmp = $box[$a];
			$box[$a] = $box[$j];
			$box[$j] = $tmp;
			$result .= chr( ord( $string[$i] ) ^ ( $box[( $box[$a] + $box[$j] ) % 256] ) );
		}
		if ( $operation == 'DECODE' ) {
			if ( ( substr( $result, 0, 10 ) == 0 || substr( $result, 0, 10 ) - time() > 0 ) && substr( $result, 10, 16 ) == substr( md5( substr( $result, 26 ).$keyb ), 0, 16 ) ) {
				return substr( $result, 26 );
			} else {
				return '';
			}
		} else {
			return $keyc.str_replace( '=', '', base64_encode( $result ) );
		}
	}
}
if (!function_exists('multiArrSort')) {
	/*
	 * 按照指定进行升序
	 * @param $arr1 $arr2 
	 * @return boolean
	*/
	function multiArrSort($arrays,$sort_key,$sort_order,$sort_type=SORT_STRING){  
		if(is_array($arrays) && !empty($arrays)){   
			foreach ($arrays as $array){   
				if(is_array($array)){   
					$key_arrays[] = $array[$sort_key];   
				}else{   
					return false;   
				}   
			}   
		}else{   
			return array();   
		}  
		array_multisort($key_arrays,$sort_order,$sort_type,$arrays);   
		return $arrays;   
	}
}
?>
